#include <iostream>
#include <list>

using namespace std;

class Animal{
public:
	char *name;
public:
	Animal(char *name)
	{
		this->name = name;
	}

	char * getName()
	{
		return this->name;
	}
};

int main()
{

	/*
	 * list特点：
	 * 1.底层数据结构为双向链表，支持快速增删，但是随机访问却比较慢
	 * 2.
	 *
	 * */
#if 0
	list<Animal> col(10);
	
	const Animal ani1((char *)"aaa");
	col.insert(col.begin(),ani1);
	
	const Animal ani2((char *)"bbb");
	col.push_front(ani2);
	
	const Animal ani3((char *)"ccc");
	col.push_back(ani3);
	
	const Animal ani4((char *)"ddd");
	col.emplace(col.begin(),ani4);

	const Animal ani5((char *)"eee");
	col.emplace_front(col.begin(),ani5);
	
	const Animal ani6((char *)"fff");
	col.emplace_back(col.begin(),ani6);	

	for (list<Animal>::iterator it = col.begin(); col.begin() != col.end(); it++) {
		Animal animal = *it;
		cout << "Animal.name: " << animal.getName() << endl;
	}
#endif

	list<int> col;
	col.push_front(11);
	col.push_front(12);
	col.push_front(13);
	col.push_front(14);
	col.push_front(15);

	col.erase(col.begin());

	for (list<int>::iterator it = col.begin(); it != col.end(); it++) {
		cout << "it: " << *it << endl;	
	}

	return 0;
}

